/**
 * 图标加载 Web Worker
 * 用于在后台线程处理图标内容加载，避免阻塞主线程
 */

// 存储图标模块引用
let iconModules = null

// 接收主线程消息
self.onmessage = async function (e) {
  const { type, data } = e.data

  try {
    switch (type) {
      case 'INIT_MODULES':
        await initModules(data.modulePaths)
        break
      case 'LOAD_ICONS':
        await loadIcons(data.iconPaths)
        break
      case 'LOAD_BATCH':
        await loadBatch(data.batch)
        break
      default:
        throw new Error(`Unknown message type: ${type}`)
    }
  } catch (error) {
    self.postMessage({
      type: 'ERROR',
      error: error.message
    })
  }
}

/**
 * 初始化图标模块
 */
async function initModules(modulePaths) {
  try {
    // 注意：Web Worker 中无法直接使用 import.meta.glob
    // 需要主线程传递模块路径列表
    self.postMessage({
      type: 'INIT_COMPLETE',
      data: {
        count: modulePaths.length
      }
    })
  } catch (error) {
    self.postMessage({
      type: 'ERROR',
      error: error.message
    })
  }
}

/**
 * 批量加载图标
 */
async function loadBatch(batch) {
  const results = []

  try {
    for (let i = 0; i < batch.length; i++) {
      const item = batch[i]

      try {
        // 发送加载进度
        self.postMessage({
          type: 'PROGRESS',
          data: {
            current: i + 1,
            total: batch.length,
            item: item.name
          }
        })

        // 模拟加载过程 - 实际应用中这里会是真正的文件加载
        await new Promise((resolve) => setTimeout(resolve, 1))

        results.push({
          ...item,
          success: true
        })
      } catch (error) {
        results.push({
          ...item,
          success: false,
          error: error.message
        })
      }
    }

    self.postMessage({
      type: 'BATCH_COMPLETE',
      data: results
    })
  } catch (error) {
    self.postMessage({
      type: 'ERROR',
      error: error.message
    })
  }
}

/**
 * 加载单个图标
 */
async function loadIcons(iconPaths) {
  // 实现图标加载逻辑
  self.postMessage({
    type: 'ICONS_LOADED',
    data: iconPaths
  })
}
